package com.qf.helloMybatis.dao;

import com.qf.helloMybatis.entity.User;
import org.apache.ibatis.annotations.Param;
import sun.util.resources.cldr.ti.CurrencyNames_ti_ER;

import java.util.List;
import java.util.Map;

/**
 * @author 钻五大人
 * @date 2022/4/20 11:19
 */
public interface UserMapper {

    // 根据ID查询用户
    User selectUserById(Integer id);

    // 根据名字和密码查询用户,如果是多参数入参推荐使用@Param指定参数名
    User selectUserByNameAndPwd(@Param("name") String name, @Param("password") String pwd);

    // 根据名字和密码查询用户,传递map类型的参数
    User selectUserByNameAndPwdWithMap(Map<String,String> map);

    // 根据名字和密码查询用户,传递user类型的参数
    User selectUserByNameAndPwdWithUser(User user);

    // 根据用户名字模糊查询用户
    User selectUserByName(String name);

    // 根据ID删除员工
    int deleteById(Integer id);

    // 添加员工
    int insertUser(User user);

    // 添加员工后回填主键ID,在员工对象中就可以获取到新增的id的值了
    int insertUserWithId(User user);

    // 根据ID修改员工
    int updateUser(User user);

    // 动态更新方法
    int updateUserDynamic(User user);

    // 动态查询 根据name或者password查询用户
    List<User> selectUserByNameOrPassword(@Param("name") String name, @Param("pwd") String password);

    // 批量删除用户，传参是list集合
    int deleteByIdList(List<Integer> idList);

    // 批量删除用户，传参是array数组
    int deleteByIdArray(Integer[] idArray);

    // 查询所有
    List<User> selectAll();
}